iobroker.eusec 0.8.2

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.
@@ -0,0 +1,451 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.convertCamelCaseToSnakeCase = exports.handleUpdate = exports.removeLastChar = exports.getVideoClipLength = exports.sleep = exports.lowestUnusedNumber = exports.moveFiles = exports.removeFiles = exports.saveImageStates = exports.setStateWithTimestamp = exports.setStateChangedWithTimestamp = exports.saveImage = exports.getDataFilePath = exports.getImageAsHTML = exports.getImage = exports.isEmpty = exports.setStateChangedAsync = void 0;
26
+ const got_1 = __importDefault(require("got"));
27
+ const eufy_security_client_1 = require("eufy-security-client");
28
+ const path_1 = __importDefault(require("path"));
29
+ const fs_extra_1 = __importDefault(require("fs-extra"));
30
+ const utils = __importStar(require("@iobroker/adapter-core"));
31
+ const types_1 = require("./types");
32
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
33
+ const setStateChangedAsync = async function (adapter, id, value) {
34
+ return await adapter.setStateChangedAsync(id, value === undefined || value === null ? null : { val: value, ack: true }).catch();
35
+ };
36
+ exports.setStateChangedAsync = setStateChangedAsync;
37
+ const isEmpty = function (str) {
38
+ if (str) {
39
+ if (str.length > 0)
40
+ return false;
41
+ return true;
42
+ }
43
+ return true;
44
+ };
45
+ exports.isEmpty = isEmpty;
46
+ const getImage = async function (url) {
47
+ const response = await (0, got_1.default)(url, {
48
+ method: "GET",
49
+ responseType: "buffer",
50
+ http2: true,
51
+ throwHttpErrors: false,
52
+ retry: {
53
+ limit: 3,
54
+ methods: ["GET"]
55
+ }
56
+ });
57
+ return response;
58
+ };
59
+ exports.getImage = getImage;
60
+ const getImageAsHTML = function (data) {
61
+ if (data && data.length > 0)
62
+ return `<img src="data:image/jpg;base64,${data.toString("base64")}" style="width: auto ;height: 100%;" />`;
63
+ return "";
64
+ };
65
+ exports.getImageAsHTML = getImageAsHTML;
66
+ const getDataFilePath = function (adapter, stationSerial, folderName, fileName) {
67
+ const dir_path = path_1.default.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, folderName);
68
+ if (!fs_extra_1.default.existsSync(dir_path)) {
69
+ fs_extra_1.default.mkdirSync(dir_path, { mode: 0o775, recursive: true });
70
+ }
71
+ return path_1.default.join(dir_path, fileName);
72
+ };
73
+ exports.getDataFilePath = getDataFilePath;
74
+ const saveImage = async function (adapter, url, station_sn, device_sn, location) {
75
+ const result = {
76
+ status: 0,
77
+ statusText: "",
78
+ imageUrl: "",
79
+ imageHtml: ""
80
+ };
81
+ try {
82
+ if (url) {
83
+ const response = await (0, exports.getImage)(url);
84
+ result.status = response.statusCode;
85
+ result.statusText = response.statusMessage ? response.statusMessage : "";
86
+ if (result.status === 200) {
87
+ const data = response.body;
88
+ const fileName = `${device_sn}${types_1.IMAGE_FILE_JPEG_EXT}`;
89
+ const filePath = path_1.default.join(utils.getAbsoluteInstanceDataDir(adapter), station_sn, location);
90
+ if (!fs_extra_1.default.existsSync(filePath)) {
91
+ fs_extra_1.default.mkdirSync(filePath, { mode: 0o775, recursive: true });
92
+ }
93
+ await fs_extra_1.default.writeFile(path_1.default.join(filePath, fileName), data).then(() => {
94
+ result.imageUrl = `/${adapter.namespace}/${station_sn}/${location}/${device_sn}${types_1.IMAGE_FILE_JPEG_EXT}`;
95
+ result.imageHtml = (0, exports.getImageAsHTML)(data);
96
+ }).catch(error => {
97
+ adapter.log.error(`saveImage(): writeFile Error: ${error} - url: ${url}`);
98
+ });
99
+ }
100
+ }
101
+ }
102
+ catch (error) {
103
+ adapter.log.error(`saveImage(): Error: ${error} - url: ${url}`);
104
+ }
105
+ return result;
106
+ };
107
+ exports.saveImage = saveImage;
108
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
109
+ const setStateChangedWithTimestamp = async function (adapter, id, value, timestamp) {
110
+ //TODO: Changed value same timestamp!
111
+ const obj = await adapter.getObjectAsync(id);
112
+ if (obj) {
113
+ if ((obj.native.timestamp !== undefined && obj.native.timestamp < timestamp) || obj.native.timestamp === undefined) {
114
+ obj.native.timestamp = timestamp;
115
+ await (0, exports.setStateChangedAsync)(adapter, id, value);
116
+ await adapter.setObject(id, obj);
117
+ }
118
+ }
119
+ };
120
+ exports.setStateChangedWithTimestamp = setStateChangedWithTimestamp;
121
+ const setStateWithTimestamp = async function (adapter, state_id, common_name, value, timestamp = new Date().getTime() - 60 * 1000, role = "text", type = "string") {
122
+ const obj = await adapter.getObjectAsync(state_id);
123
+ if (obj) {
124
+ if ((obj.native.timestamp !== undefined && obj.native.timestamp < timestamp) || obj.native.timestamp === undefined) {
125
+ obj.native.timestamp = timestamp;
126
+ await adapter.setStateAsync(state_id, { val: value, ack: true });
127
+ await adapter.setObject(state_id, obj);
128
+ }
129
+ }
130
+ else {
131
+ await adapter.setObjectNotExistsAsync(state_id, {
132
+ type: "state",
133
+ common: {
134
+ name: common_name,
135
+ type: type,
136
+ role: role,
137
+ read: true,
138
+ write: false,
139
+ },
140
+ native: {
141
+ timestamp: timestamp
142
+ },
143
+ });
144
+ await adapter.setStateAsync(state_id, { val: value, ack: true });
145
+ }
146
+ };
147
+ exports.setStateWithTimestamp = setStateWithTimestamp;
148
+ const saveImageStates = async function (adapter, url, timestamp, station_sn, device_sn, location, url_state_id, html_state_id, prefix_common_name, retry = 1) {
149
+ const image_data = await (0, exports.saveImage)(adapter, url, station_sn, device_sn, location);
150
+ if (image_data.status === 404) {
151
+ if (retry < 6) {
152
+ adapter.log.info(`Retry get image in ${5 * retry} seconds from url: ${url} (retry_count: ${retry} error: ${image_data.statusText} message: ${image_data.statusText})...`);
153
+ setTimeout(() => {
154
+ (0, exports.saveImageStates)(adapter, url, timestamp, station_sn, device_sn, location, url_state_id, html_state_id, prefix_common_name, ++retry);
155
+ }, 5 * 1000 * retry);
156
+ }
157
+ else {
158
+ adapter.log.warn(`Could not download the image within 5 attempts from url: ${url} (error: ${image_data.statusText} message: ${image_data.statusText})`);
159
+ }
160
+ return;
161
+ }
162
+ else if (image_data.status === 200) {
163
+ (0, exports.setStateWithTimestamp)(adapter, url_state_id, `${prefix_common_name} URL`, image_data.imageUrl, timestamp, "url");
164
+ (0, exports.setStateWithTimestamp)(adapter, html_state_id, `${prefix_common_name} HTML image`, image_data.imageHtml, timestamp, "html");
165
+ }
166
+ };
167
+ exports.saveImageStates = saveImageStates;
168
+ const removeFiles = function (adapter, stationSerial, folderName, device_sn) {
169
+ return new Promise((resolve, reject) => {
170
+ try {
171
+ const dir_path = path_1.default.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, folderName);
172
+ if (fs_extra_1.default.existsSync(dir_path)) {
173
+ const files = fs_extra_1.default.readdirSync(dir_path).filter(fn => fn.startsWith(device_sn));
174
+ try {
175
+ files.map(filename => fs_extra_1.default.removeSync(path_1.default.join(dir_path, filename)));
176
+ }
177
+ catch (error) {
178
+ }
179
+ }
180
+ resolve();
181
+ }
182
+ catch (error) {
183
+ reject(error);
184
+ }
185
+ });
186
+ };
187
+ exports.removeFiles = removeFiles;
188
+ const moveFiles = function (adapter, stationSerial, device_sn, srcFolderName, dstFolderName) {
189
+ return new Promise((resolve, reject) => {
190
+ try {
191
+ const dirSrcPath = path_1.default.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, srcFolderName);
192
+ const dirDstPath = path_1.default.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, dstFolderName);
193
+ if (!fs_extra_1.default.existsSync(dirDstPath)) {
194
+ fs_extra_1.default.mkdirSync(dirDstPath, { mode: 0o775, recursive: true });
195
+ }
196
+ if (fs_extra_1.default.existsSync(dirSrcPath)) {
197
+ const files = fs_extra_1.default.readdirSync(dirSrcPath).filter(fn => fn.startsWith(device_sn));
198
+ try {
199
+ files.map(filename => fs_extra_1.default.moveSync(path_1.default.join(dirSrcPath, filename), path_1.default.join(dirDstPath, filename)));
200
+ }
201
+ catch (error) {
202
+ }
203
+ }
204
+ resolve();
205
+ }
206
+ catch (error) {
207
+ reject(error);
208
+ }
209
+ });
210
+ };
211
+ exports.moveFiles = moveFiles;
212
+ const lowestUnusedNumber = function (sequence, startingFrom) {
213
+ const arr = sequence.slice(0);
214
+ arr.sort((a, b) => a - b);
215
+ return arr.reduce((lowest, num, i) => {
216
+ const seqIndex = i + startingFrom;
217
+ return num !== seqIndex && seqIndex < lowest ? seqIndex : lowest;
218
+ }, arr.length + startingFrom);
219
+ };
220
+ exports.lowestUnusedNumber = lowestUnusedNumber;
221
+ const sleep = async (ms) => {
222
+ return new Promise((resolve) => {
223
+ setTimeout(resolve, ms);
224
+ });
225
+ };
226
+ exports.sleep = sleep;
227
+ const getVideoClipLength = (device) => {
228
+ let length = 60;
229
+ const workingMode = device.getRawProperty(eufy_security_client_1.CommandType.CMD_SET_PIR_POWERMODE);
230
+ if (workingMode !== undefined) {
231
+ switch (workingMode.value) {
232
+ case "0":
233
+ if (device.isCamera2Product() || device.isIndoorCamera() || device.isSoloCameras())
234
+ length = 20;
235
+ else if (device.isBatteryDoorbell() || device.isBatteryDoorbell2())
236
+ length = 30;
237
+ break;
238
+ case "1":
239
+ // Corrisponds to 60 seconds
240
+ break;
241
+ case "2":
242
+ const customValue = device.getRawProperty(eufy_security_client_1.CommandType.CMD_DEV_RECORD_TIMEOUT);
243
+ if (customValue !== undefined) {
244
+ try {
245
+ length = Number.parseInt(customValue.value);
246
+ }
247
+ catch (error) {
248
+ }
249
+ }
250
+ break;
251
+ case "3":
252
+ // Corrisponds to 60 seconds?? (this mode exists only for battery doorbells; mode: Optimal Battery Life)
253
+ break;
254
+ }
255
+ }
256
+ return length;
257
+ };
258
+ exports.getVideoClipLength = getVideoClipLength;
259
+ const removeLastChar = function (text, char) {
260
+ const strArr = [...text];
261
+ strArr.splice(text.lastIndexOf(char), 1);
262
+ return strArr.join("");
263
+ };
264
+ exports.removeLastChar = removeLastChar;
265
+ const handleUpdate = async function (adapter, log, old_version) {
266
+ if (old_version <= 0.31) {
267
+ try {
268
+ const watermark = await adapter.getStatesAsync("*.watermark");
269
+ if (watermark)
270
+ Object.keys(watermark).forEach(async (id) => {
271
+ await adapter.delObjectAsync(id).catch();
272
+ });
273
+ }
274
+ catch (error) {
275
+ log.error("Version 0.3.1 - watermark: Error:", error);
276
+ }
277
+ try {
278
+ const state = await adapter.getStatesAsync("*.state");
279
+ if (state)
280
+ Object.keys(state).forEach(async (id) => {
281
+ await adapter.delObjectAsync(id).catch();
282
+ });
283
+ }
284
+ catch (error) {
285
+ log.error("Version 0.3.1 - state: Error:", error);
286
+ }
287
+ try {
288
+ const wifi_rssi = await adapter.getStatesAsync("*.wifi_rssi");
289
+ if (wifi_rssi)
290
+ Object.keys(wifi_rssi).forEach(async (id) => {
291
+ await adapter.delObjectAsync(id).catch();
292
+ });
293
+ }
294
+ catch (error) {
295
+ log.error("Version 0.3.1 - wifi_rssi: Error:", error);
296
+ }
297
+ }
298
+ if (old_version <= 0.41) {
299
+ try {
300
+ const changeRole = async function (adapter, state, role) {
301
+ try {
302
+ const states = await adapter.getStatesAsync(`*.${state}`);
303
+ if (states)
304
+ Object.keys(states).forEach(async (id) => {
305
+ await adapter.extendObjectAsync(id, {
306
+ type: "state",
307
+ common: {
308
+ role: role
309
+ }
310
+ }, {}).catch();
311
+ });
312
+ }
313
+ catch (error) {
314
+ log.error(`state: ${state} role: ${role} - Error:`, error);
315
+ }
316
+ };
317
+ await changeRole(adapter, types_1.CameraStateID.STATE, "value");
318
+ await changeRole(adapter, types_1.CameraStateID.LIVESTREAM, "url");
319
+ await changeRole(adapter, types_1.CameraStateID.LAST_LIVESTREAM_PIC_URL, "url");
320
+ await changeRole(adapter, types_1.CameraStateID.LAST_LIVESTREAM_PIC_HTML, "html");
321
+ await changeRole(adapter, types_1.CameraStateID.LAST_LIVESTREAM_VIDEO_URL, "url");
322
+ await changeRole(adapter, types_1.CameraStateID.ENABLED, "switch.enable");
323
+ await changeRole(adapter, types_1.CameraStateID.ANTITHEFT_DETECTION, "switch.enable");
324
+ await changeRole(adapter, types_1.CameraStateID.AUTO_NIGHTVISION, "switch.enable");
325
+ await changeRole(adapter, types_1.CameraStateID.MOTION_DETECTION, "switch.enable");
326
+ await changeRole(adapter, types_1.CameraStateID.RTSP_STREAM, "switch.enable");
327
+ await changeRole(adapter, types_1.CameraStateID.RTSP_STREAM_URL, "url");
328
+ await changeRole(adapter, types_1.CameraStateID.LED_STATUS, "switch.enable");
329
+ await changeRole(adapter, types_1.CameraStateID.MOTION_DETECTED, "sensor.motion");
330
+ await changeRole(adapter, types_1.CameraStateID.PERSON_DETECTED, "sensor.motion");
331
+ await changeRole(adapter, types_1.CameraStateID.LAST_PERSON_IDENTIFIED, "text");
332
+ await changeRole(adapter, types_1.CameraStateID.LAST_EVENT_PIC_URL, "url");
333
+ await changeRole(adapter, types_1.CameraStateID.LAST_EVENT_PIC_HTML, "html");
334
+ await changeRole(adapter, types_1.CameraStateID.LAST_EVENT_VIDEO_URL, "url");
335
+ await changeRole(adapter, types_1.DoorbellStateID.RINGING, "sensor");
336
+ await changeRole(adapter, types_1.IndoorCameraStateID.SOUND_DETECTION, "switch.enable");
337
+ await changeRole(adapter, types_1.IndoorCameraStateID.PET_DETECTION, "switch.enable");
338
+ await changeRole(adapter, types_1.IndoorCameraStateID.SOUND_DETECTED, "sensor.noise");
339
+ await changeRole(adapter, types_1.IndoorCameraStateID.CRYING_DETECTED, "sensor.noise");
340
+ await changeRole(adapter, types_1.IndoorCameraStateID.PET_DETECTED, "sensor");
341
+ await changeRole(adapter, types_1.EntrySensorStateID.STATE, "value");
342
+ await changeRole(adapter, types_1.EntrySensorStateID.SENSOR_OPEN, "sensor");
343
+ await changeRole(adapter, types_1.EntrySensorStateID.LOW_BATTERY, "sensor");
344
+ await changeRole(adapter, types_1.EntrySensorStateID.SENSOR_CHANGE_TIME, "value");
345
+ await changeRole(adapter, types_1.MotionSensorStateID.STATE, "value");
346
+ await changeRole(adapter, types_1.MotionSensorStateID.LOW_BATTERY, "sensor");
347
+ await changeRole(adapter, types_1.MotionSensorStateID.MOTION_DETECTED, "sensor.motion");
348
+ await changeRole(adapter, types_1.KeyPadStateID.STATE, "value");
349
+ await changeRole(adapter, types_1.KeyPadStateID.LOW_BATTERY, "sensor");
350
+ await changeRole(adapter, types_1.StationStateID.CURRENT_MODE, "value");
351
+ }
352
+ catch (error) {
353
+ log.error("Version 0.4.1 - Error:", error);
354
+ }
355
+ }
356
+ if (old_version <= 0.42) {
357
+ try {
358
+ const changeRole = async function (adapter, state, role) {
359
+ try {
360
+ const states = await adapter.getStatesAsync(`*.${state}`);
361
+ if (states)
362
+ Object.keys(states).forEach(async (id) => {
363
+ await adapter.extendObjectAsync(id, {
364
+ type: "state",
365
+ common: {
366
+ role: role
367
+ }
368
+ }, {}).catch();
369
+ });
370
+ }
371
+ catch (error) {
372
+ log.error(`state: ${state} role: ${role} - Error:`, error);
373
+ }
374
+ };
375
+ await changeRole(adapter, types_1.CameraStateID.STATE, "info.status");
376
+ await changeRole(adapter, types_1.CameraStateID.NAME, "info.name");
377
+ await changeRole(adapter, types_1.CameraStateID.MAC_ADDRESS, "info.mac");
378
+ await changeRole(adapter, types_1.CameraStateID.BATTERY, "value.battery");
379
+ await changeRole(adapter, types_1.CameraStateID.BATTERY_TEMPERATURE, "value.temperature");
380
+ await changeRole(adapter, types_1.EntrySensorStateID.LOW_BATTERY, "indicator.lowbat");
381
+ await changeRole(adapter, types_1.StationStateID.LAN_IP_ADDRESS, "info.ip");
382
+ }
383
+ catch (error) {
384
+ log.error("Version 0.4.2 - States - Error:", error);
385
+ }
386
+ try {
387
+ if (fs_extra_1.default.existsSync(path_1.default.join(utils.getAbsoluteDefaultDataDir(), "files", adapter.namespace))) {
388
+ if (!fs_extra_1.default.existsSync(utils.getAbsoluteInstanceDataDir(adapter)))
389
+ fs_extra_1.default.mkdirpSync(utils.getAbsoluteInstanceDataDir(adapter));
390
+ const files = fs_extra_1.default.readdirSync(path_1.default.join(utils.getAbsoluteDefaultDataDir(), "files", adapter.namespace)).filter(fn => fn.startsWith("T"));
391
+ files.map(filename => fs_extra_1.default.moveSync(path_1.default.join(utils.getAbsoluteDefaultDataDir(), "files", adapter.namespace, filename), path_1.default.join(utils.getAbsoluteInstanceDataDir(adapter), filename)));
392
+ }
393
+ }
394
+ catch (error) {
395
+ log.error("Version 0.4.2 - Files - Error:", error);
396
+ }
397
+ }
398
+ if (old_version <= 0.61) {
399
+ try {
400
+ const all = await adapter.getStatesAsync("T*");
401
+ if (all) {
402
+ Object.keys(all).forEach(async (id) => {
403
+ await adapter.delObjectAsync(id, { recursive: false }).catch();
404
+ });
405
+ }
406
+ const channels = await adapter.getChannelsOfAsync();
407
+ if (channels) {
408
+ Object.values(channels).forEach(async (channel) => {
409
+ if (channel.common.name !== "info") {
410
+ await adapter.delObjectAsync(channel._id, { recursive: false }).catch();
411
+ }
412
+ });
413
+ }
414
+ const devices = await adapter.getDevicesAsync();
415
+ if (devices) {
416
+ Object.values(devices).forEach(async (device) => {
417
+ await adapter.delObjectAsync(device._id, { recursive: false }).catch();
418
+ });
419
+ }
420
+ }
421
+ catch (error) {
422
+ log.error("Version 0.6.1: Error:", error);
423
+ }
424
+ }
425
+ if (old_version <= 0.74) {
426
+ try {
427
+ await adapter.setObjectAsync("verify_code", {
428
+ type: "state",
429
+ common: {
430
+ name: "2FA verification code",
431
+ type: "string",
432
+ role: "state",
433
+ read: true,
434
+ write: true,
435
+ },
436
+ native: {},
437
+ });
438
+ }
439
+ catch (error) {
440
+ log.error("Version 0.7.4: Error:", error);
441
+ }
442
+ }
443
+ };
444
+ exports.handleUpdate = handleUpdate;
445
+ const convertCamelCaseToSnakeCase = function (value) {
446
+ return value.replace(/[A-Z]/g, (letter, index) => {
447
+ return index == 0 ? letter.toLowerCase() : "_" + letter.toLowerCase();
448
+ });
449
+ };
450
+ exports.convertCamelCaseToSnakeCase = convertCamelCaseToSnakeCase;
451
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAoC;AACpC,+DAA2D;AAC3D,gDAAwB;AACxB,wDAA2B;AAC3B,8DAAgD;AAEhD,mCAA2K;AAI3K,6EAA6E;AACtE,MAAM,oBAAoB,GAAG,KAAK,WAAU,OAAyB,EAAE,EAAU,EAAE,KAAU;IAChG,OAAO,MAAM,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACpI,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B;AAEK,MAAM,OAAO,GAAG,UAAS,GAA8B;IAC1D,IAAI,GAAG,EAAE;QACL,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YACd,OAAO,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC;KACf;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAPW,QAAA,OAAO,WAOlB;AAEK,MAAM,QAAQ,GAAG,KAAK,WAAU,GAAW;IAC9C,MAAM,QAAQ,GAAG,MAAM,IAAA,aAAG,EAAC,GAAG,EAAE;QAC5B,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,QAAQ;QACtB,KAAK,EAAE,IAAI;QACX,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE;YACH,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC,KAAK,CAAC;SACnB;KACJ,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAA;AAZY,QAAA,QAAQ,YAYpB;AAEM,MAAM,cAAc,GAAG,UAAS,IAAY;IAC/C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QACvB,OAAO,mCAAmC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC/G,OAAO,EAAE,CAAC;AACd,CAAC,CAAA;AAJY,QAAA,cAAc,kBAI1B;AAEM,MAAM,eAAe,GAAG,UAAS,OAAyB,EAAE,aAAqB,EAAE,UAAkB,EAAE,QAAgB;IAC1H,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IACjG,IAAI,CAAC,kBAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3B,kBAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;KAC3D;IACD,OAAO,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC,CAAA;AANY,QAAA,eAAe,mBAM3B;AAEM,MAAM,SAAS,GAAG,KAAK,WAAU,OAAyB,EAAE,GAAW,EAAE,UAAkB,EAAE,SAAiB,EAAE,QAAgB;IACnI,MAAM,MAAM,GAAkB;QAC1B,MAAM,EAAE,CAAC;QACT,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;KAChB,CAAC;IACF,IAAI;QACA,IAAI,GAAG,EAAE;YACL,MAAM,QAAQ,GAAG,MAAM,IAAA,gBAAQ,EAAC,GAAG,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;YACpC,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE;gBACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC3B,MAAM,QAAQ,GAAG,GAAG,SAAS,GAAG,2BAAmB,EAAE,CAAC;gBACtD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAE5F,IAAI,CAAC,kBAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBAC3B,kBAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;iBAC3D;gBAED,MAAM,kBAAG,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC/D,MAAM,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,SAAS,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,GAAG,2BAAmB,EAAE,CAAC;oBACvG,MAAM,CAAC,SAAS,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,KAAK,WAAW,GAAG,EAAE,CAAC,CAAC;gBAC9E,CAAC,CAAC,CAAC;aACN;SACJ;KACJ;IAAC,OAAO,KAAK,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,KAAK,WAAW,GAAG,EAAE,CAAC,CAAC;KACnE;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAA;AAjCY,QAAA,SAAS,aAiCrB;AAED,6EAA6E;AACtE,MAAM,4BAA4B,GAAG,KAAK,WAAU,OAAyB,EAAE,EAAU,EAAE,KAAU,EAAE,SAAiB;IAC3H,qCAAqC;IACrC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC7C,IAAI,GAAG,EAAE;QACL,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;YAChH,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YAEjC,MAAM,IAAA,4BAAoB,EAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC/C,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;SACpC;KACJ;AACL,CAAC,CAAC;AAXW,QAAA,4BAA4B,gCAWvC;AAEK,MAAM,qBAAqB,GAAG,KAAK,WAAU,OAAyB,EAAE,QAAgB,EAAE,WAAmB,EAAE,KAAa,EAAE,YAAmB,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,OAA4F,QAAQ;IACzS,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,GAAG,EAAE;QACL,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;YAChH,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;YAEjC,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;SAC1C;KACJ;SAAM;QACH,MAAM,OAAO,CAAC,uBAAuB,CAAC,QAAQ,EAAE;YAC5C,IAAI,EAAE,OAAO;YACb,MAAM,EAAE;gBACJ,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,KAAK;aACf;YACD,MAAM,EAAE;gBACJ,SAAS,EAAE,SAAS;aACvB;SACJ,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;KACpE;AACL,CAAC,CAAA;AAzBY,QAAA,qBAAqB,yBAyBjC;AAEM,MAAM,eAAe,GAAG,KAAK,WAAU,OAAyB,EAAE,GAAW,EAAE,SAAgB,EAAE,UAAkB,EAAE,SAAiB,EAAE,QAAgB,EAAE,YAAoB,EAAE,aAAqB,EAAE,kBAA0B,EAAE,KAAK,GAAG,CAAC;IAC/O,MAAM,UAAU,GAAG,MAAM,IAAA,iBAAS,EAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClF,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,EAAE;QAC3B,IAAI,KAAK,GAAG,CAAC,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,KAAK,sBAAsB,GAAG,kBAAkB,KAAK,WAAW,UAAU,CAAC,UAAU,aAAa,UAAU,CAAC,UAAU,MAAM,CAAC,CAAC;YAC1K,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAA,uBAAe,EAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,KAAK,CAAC,CAAC;YACxI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;SACxB;aAAM;YACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,4DAA4D,GAAG,YAAY,UAAU,CAAC,UAAU,aAAa,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;SAC3J;QACD,OAAO;KACV;SAAM,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,EAAE;QAClC,IAAA,6BAAqB,EAAC,OAAO,EAAE,YAAY,EAAE,GAAG,kBAAkB,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACjH,IAAA,6BAAqB,EAAC,OAAO,EAAE,aAAa,EAAE,GAAG,kBAAkB,aAAa,EAAE,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;KAC9H;AACL,CAAC,CAAA;AAhBY,QAAA,eAAe,mBAgB3B;AAEM,MAAM,WAAW,GAAG,UAAS,OAAyB,EAAE,aAAqB,EAAE,UAAkB,EAAE,SAAiB;IACvH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI;YACA,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;YACjG,IAAI,kBAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC1B,MAAM,KAAK,GAAG,kBAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC/E,IAAI;oBACA,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,kBAAG,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACxE;gBAAC,OAAO,KAAK,EAAE;iBACf;aACJ;YACD,OAAO,EAAE,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,CAAC,KAAK,CAAC,CAAC;SACjB;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAA;AAhBY,QAAA,WAAW,eAgBvB;AAEM,MAAM,SAAS,GAAG,UAAS,OAAyB,EAAE,aAAqB,EAAE,SAAiB,EAAE,aAAqB,EAAE,aAAqB;IAC/I,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI;YACA,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;YACtG,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;YACtG,IAAI,CAAC,kBAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;gBAC7B,kBAAG,CAAC,SAAS,CAAC,UAAU,EAAE,EAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;aAC7D;YACD,IAAI,kBAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;gBAC5B,MAAM,KAAK,GAAG,kBAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;gBACjF,IAAI;oBACA,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,kBAAG,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACzG;gBAAC,OAAO,KAAK,EAAE;iBACf;aACJ;YACD,OAAO,EAAE,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,CAAC,KAAK,CAAC,CAAC;SACjB;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAA;AApBY,QAAA,SAAS,aAoBrB;AAEM,MAAM,kBAAkB,GAAG,UAAU,QAAkB,EAAE,YAAoB;IAChF,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,QAAQ,GAAG,CAAC,GAAG,YAAY,CAAC;QAClC,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAA;IACpE,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;AAClC,CAAC,CAAA;AAPY,QAAA,kBAAkB,sBAO9B;AAEM,MAAM,KAAK,GAAG,KAAK,EAAE,EAAU,EAAiB,EAAE;IACrD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAJW,QAAA,KAAK,SAIhB;AAEK,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAU,EAAE;IACzD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,kCAAW,CAAC,qBAAqB,CAAC,CAAC;IAC7E,IAAI,WAAW,KAAK,SAAS,EAAE;QAC3B,QAAO,WAAW,CAAC,KAAK,EAAE;YACtB,KAAK,GAAG;gBACJ,IAAI,MAAM,CAAC,gBAAgB,EAAE,IAAI,MAAM,CAAC,cAAc,EAAE,IAAI,MAAM,CAAC,aAAa,EAAE;oBAC9E,MAAM,GAAG,EAAE,CAAC;qBACX,IAAI,MAAM,CAAC,iBAAiB,EAAE,IAAI,MAAM,CAAC,kBAAkB,EAAE;oBAC9D,MAAM,GAAG,EAAE,CAAC;gBAChB,MAAM;YACV,KAAK,GAAG;gBACJ,4BAA4B;gBAC5B,MAAM;YACV,KAAK,GAAG;gBACJ,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,kCAAW,CAAC,sBAAsB,CAAC,CAAC;gBAC9E,IAAI,WAAW,KAAK,SAAS,EAAE;oBAC3B,IAAI;wBACA,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;qBAC/C;oBAAC,OAAM,KAAK,EAAE;qBACd;iBACJ;gBACD,MAAM;YACV,KAAK,GAAG;gBACJ,wGAAwG;gBACxG,MAAM;SACb;KACJ;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AA7BW,QAAA,kBAAkB,sBA6B7B;AAEK,MAAM,cAAc,GAAG,UAAS,IAAY,EAAE,IAAY;IAC7D,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC,CAAA;AAJY,QAAA,cAAc,kBAI1B;AAEM,MAAM,YAAY,GAAG,KAAK,WAAU,OAAyB,EAAE,GAAmB,EAAE,WAAmB;IAC1G,IAAI,WAAW,IAAI,IAAI,EAAE;QACrB,IAAI;YACA,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC9D,IAAI,SAAS;gBACT,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;oBACtC,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC7C,CAAC,CAAC,CAAC;SACV;QAAC,OAAO,KAAK,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;SACzD;QACD,IAAI;YACA,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,KAAK;gBACL,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;oBAClC,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC7C,CAAC,CAAC,CAAC;SACV;QAAC,OAAO,KAAK,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;SACrD;QACD,IAAI;YACA,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC9D,IAAI,SAAS;gBACT,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;oBACtC,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC7C,CAAC,CAAC,CAAC;SACV;QAAC,OAAO,KAAK,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;SACzD;KACJ;IACD,IAAI,WAAW,IAAI,IAAI,EAAE;QACrB,IAAI;YACA,MAAM,UAAU,GAAG,KAAK,WAAU,OAAyB,EAAE,KAAa,EAAE,IAAY;gBACpF,IAAI;oBACA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;oBAC1D,IAAI,MAAM;wBACN,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;4BACnC,MAAM,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE;gCAChC,IAAI,EAAE,OAAO;gCACb,MAAM,EAAE;oCACJ,IAAI,EAAE,IAAI;iCACb;6BACJ,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;wBACnB,CAAC,CAAC,CAAC;iBACV;gBAAC,OAAO,KAAK,EAAE;oBACZ,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,WAAW,EAAE,KAAK,CAAC,CAAC;iBAC9D;YACL,CAAC,CAAC;YAEF,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YACxE,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;YAC1E,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAC1E,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAClE,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;YAC9E,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;YAC3E,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;YAC3E,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YACtE,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YAChE,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;YACrE,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;YAC1E,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;YAC1E,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;YACxE,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YACnE,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;YACrE,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YACrE,MAAM,UAAU,CAAC,OAAO,EAAE,uBAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC7D,MAAM,UAAU,CAAC,OAAO,EAAE,2BAAmB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;YAChF,MAAM,UAAU,CAAC,OAAO,EAAE,2BAAmB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;YAC9E,MAAM,UAAU,CAAC,OAAO,EAAE,2BAAmB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YAC9E,MAAM,UAAU,CAAC,OAAO,EAAE,2BAAmB,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;YAC/E,MAAM,UAAU,CAAC,OAAO,EAAE,2BAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACtE,MAAM,UAAU,CAAC,OAAO,EAAE,0BAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7D,MAAM,UAAU,CAAC,OAAO,EAAE,0BAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACpE,MAAM,UAAU,CAAC,OAAO,EAAE,0BAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACpE,MAAM,UAAU,CAAC,OAAO,EAAE,0BAAkB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;YAC1E,MAAM,UAAU,CAAC,OAAO,EAAE,2BAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,UAAU,CAAC,OAAO,EAAE,2BAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YACrE,MAAM,UAAU,CAAC,OAAO,EAAE,2BAAmB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;YAChF,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC/D,MAAM,UAAU,CAAC,OAAO,EAAE,sBAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;SACnE;QAAC,OAAO,KAAK,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;SAC9C;KACJ;IACD,IAAI,WAAW,IAAI,IAAI,EAAE;QACrB,IAAI;YACA,MAAM,UAAU,GAAG,KAAK,WAAU,OAAyB,EAAE,KAAa,EAAE,IAAY;gBACpF,IAAI;oBACA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;oBAC1D,IAAI,MAAM;wBACN,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;4BACnC,MAAM,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE;gCAChC,IAAI,EAAE,OAAO;gCACb,MAAM,EAAE;oCACJ,IAAI,EAAE,IAAI;iCACb;6BACJ,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;wBACnB,CAAC,CAAC,CAAC;iBACV;gBAAC,OAAO,KAAK,EAAE;oBACZ,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,WAAW,EAAE,KAAK,CAAC,CAAC;iBAC9D;YACL,CAAC,CAAC;YAEF,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC9D,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC3D,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACjE,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAClE,MAAM,UAAU,CAAC,OAAO,EAAE,qBAAa,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;YAClF,MAAM,UAAU,CAAC,OAAO,EAAE,0BAAkB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YAC9E,MAAM,UAAU,CAAC,OAAO,EAAE,sBAAc,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;SACvE;QAAC,OAAO,KAAK,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;SACvD;QACD,IAAI;YACA,IAAI,kBAAG,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE;gBAC1F,IAAI,CAAC,kBAAG,CAAC,UAAU,CAAC,KAAK,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;oBAC1D,kBAAG,CAAC,UAAU,CAAC,KAAK,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9D,MAAM,KAAK,GAAG,kBAAG,CAAC,WAAW,CAAC,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,kBAAG,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;aAC3L;SACJ;QAAC,OAAO,KAAK,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;SACtD;KACJ;IACD,IAAI,WAAW,IAAI,IAAI,EAAE;QACrB,IAAI;YACA,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,GAAG,EAAE;gBACL,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;oBAChC,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;gBACnE,CAAC,CAAC,CAAC;aACN;YACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;YACpD,IAAI,QAAQ,EAAE;gBACV,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;oBAC5C,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;wBAChC,MAAM,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;qBACzE;gBACL,CAAC,CAAC,CAAC;aACN;YACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;YAChD,IAAI,OAAO,EAAE;gBACT,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;oBAC1C,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBACzE,CAAC,CAAC,CAAC;aACN;SACJ;QAAC,OAAO,KAAK,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;SAC7C;KACJ;IACD,IAAI,WAAW,IAAI,IAAI,EAAE;QACrB,IAAI;YACA,MAAM,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE;gBACxC,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE;oBACJ,IAAI,EAAE,uBAAuB;oBAC7B,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI;iBACd;gBACD,MAAM,EAAE,EAAE;aACb,CAAC,CAAC;SACN;QAAC,OAAO,KAAK,EAAE;YACZ,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;SAC7C;KACJ;AACL,CAAC,CAAC;AA1KW,QAAA,YAAY,gBA0KvB;AAEK,MAAM,2BAA2B,GAAG,UAAU,KAAa;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC7C,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAJW,QAAA,2BAA2B,+BAItC"}